package org.tianyun.cloud.config.console.annotaion;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 控制台组件发现注解，此注解需要跟@Bean或@SmartScope注解一起使用
 *
 * @author ebert_chan
 */
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface ConsoleDiscovery {

    /**
     * data命名空间 redis
     */
    String NAMESPACE_DATA_REDIS = "data-redis";

    /**
     * rabbitmq命名空间 rabbitmq
     */
    String NAMESPACE_AMQP_RABBITMQ = "amqp-rabbitmq";

    /**
     * datasource命名空间 routing
     */
    String NAMESPACE_DATASOURCE_ROUTING = "datasource-routing";

    /**
     * datasource命名空间 sharding-jdbc
     */
    String NAMESPACE_DATASOURCE_SHARDING = "datasource-sharding";

    /**
     * namespace名称，对不同组件进行分类和隔离
     */
    String namespace();

    /**
     * 组件对应bean名称。值为空，自动设置为当前被声明的@Bean名称
     */
    String beanName() default "";

    /**
     * 组件自动装配对象的配置前缀
     */
    String prefix() default "";


}
